<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CANopenNode: LSS Master</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">CANopenNode
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__CO__LSSmaster.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">LSS Master<div class="ingroups"><a class="el" href="group__CO__CANopen__305.html">CANopen_305</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">LSS master object.  <a href="structCO__LSSmaster__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structCO__LSSmaster__fastscan__t.html">CO_LSSmaster_fastscan_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parameters for LSS fastscan <a class="el" href="group__CO__LSSmaster.html#gad01ce178ea43b1843f541d4dd488f90e" title="Select a node by LSS identify fastscan.">CO_LSSmaster_IdentifyFastscan</a>.  <a href="structCO__LSSmaster__fastscan__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga76adbab914fff5b18982dad449e0a00a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga76adbab914fff5b18982dad449e0a00a">CO_LSSmaster_DEFAULT_TIMEOUT</a>&#160;&#160;&#160;1000U /* ms */</td></tr>
<tr class="memdesc:ga76adbab914fff5b18982dad449e0a00a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default timeout for LSS slave in ms.  <a href="group__CO__LSSmaster.html#ga76adbab914fff5b18982dad449e0a00a">More...</a><br /></td></tr>
<tr class="separator:ga76adbab914fff5b18982dad449e0a00a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gae848ff3ff649c8a23b96053efaea4985"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> { <br />
&#160;&#160;<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a0f527d1ce01820fa184ccae2510505c7">CO_LSSmaster_SCAN_FINISHED</a> = 2, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34">CO_LSSmaster_WAIT_SLAVE</a> = 1, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099">CO_LSSmaster_OK</a> = 0, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d">CO_LSSmaster_TIMEOUT</a> = -1, 
<br />
&#160;&#160;<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9">CO_LSSmaster_ILLEGAL_ARGUMENT</a> = -2, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60">CO_LSSmaster_INVALID_STATE</a> = -3, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ae9eb103f25dbe694143a64e7bb2c29d9">CO_LSSmaster_SCAN_NOACK</a> = -4, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985af84e0db6bd9aeebffc4266618145a8ea">CO_LSSmaster_SCAN_FAILED</a> = -5, 
<br />
&#160;&#160;<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ab6985b2cbcb24653ec1f2ae46d3c09cd">CO_LSSmaster_OK_ILLEGAL_ARGUMENT</a> = -101, 
<a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a51083a5cf04e03a2f623eddb1d7324c7">CO_LSSmaster_OK_MANUFACTURER</a> = -102
<br />
 }</td></tr>
<tr class="memdesc:gae848ff3ff649c8a23b96053efaea4985"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return values of LSS master functions.  <a href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">More...</a><br /></td></tr>
<tr class="separator:gae848ff3ff649c8a23b96053efaea4985"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6e3f0d07f0712c371fb81cbf4a3dbcb1"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga6e3f0d07f0712c371fb81cbf4a3dbcb1">CO_LSSmaster_scantype_t</a> { <a class="el" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1a5666c53e2fc02e214294bd3210146c90">CO_LSSmaster_FS_SCAN</a> = 0, 
<a class="el" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ae0e6e92e760129fc173a0a4f19a0cf07">CO_LSSmaster_FS_SKIP</a> = 1, 
<a class="el" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3">CO_LSSmaster_FS_MATCH</a> = 2
 }</td></tr>
<tr class="memdesc:ga6e3f0d07f0712c371fb81cbf4a3dbcb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scan type for <a class="el" href="structCO__LSSmaster__fastscan__t.html" title="Parameters for LSS fastscan CO_LSSmaster_IdentifyFastscan.">CO_LSSmaster_fastscan_t</a> scan.  <a href="group__CO__LSSmaster.html#ga6e3f0d07f0712c371fb81cbf4a3dbcb1">More...</a><br /></td></tr>
<tr class="separator:ga6e3f0d07f0712c371fb81cbf4a3dbcb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0675297a7e7e1f472ad2e88d6b7408e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532">CO_ReturnError_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga0675297a7e7e1f472ad2e88d6b7408e7">CO_LSSmaster_init</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> timeout_ms, <a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *CANdevRx, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> CANdevRxIdx, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> CANidLssSlave, <a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *CANdevTx, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> CANdevTxIdx, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> CANidLssMaster)</td></tr>
<tr class="memdesc:ga0675297a7e7e1f472ad2e88d6b7408e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize LSS object.  <a href="group__CO__LSSmaster.html#ga0675297a7e7e1f472ad2e88d6b7408e7">More...</a><br /></td></tr>
<tr class="separator:ga0675297a7e7e1f472ad2e88d6b7408e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae22758aff11b796cfaed979c5f2808c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gae22758aff11b796cfaed979c5f2808c0">CO_LSSmaster_changeTimeout</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> timeout_ms)</td></tr>
<tr class="memdesc:gae22758aff11b796cfaed979c5f2808c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change LSS master timeout.  <a href="group__CO__LSSmaster.html#gae22758aff11b796cfaed979c5f2808c0">More...</a><br /></td></tr>
<tr class="separator:gae22758aff11b796cfaed979c5f2808c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabfeb7e75d88b76bb00c1740381c7b53f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gabfeb7e75d88b76bb00c1740381c7b53f">CO_LSSmaster_initCallbackPre</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, void *object, void(*pFunctSignal)(void *object))</td></tr>
<tr class="memdesc:gabfeb7e75d88b76bb00c1740381c7b53f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize LSSmasterRx callback function.  <a href="group__CO__LSSmaster.html#gabfeb7e75d88b76bb00c1740381c7b53f">More...</a><br /></td></tr>
<tr class="separator:gabfeb7e75d88b76bb00c1740381c7b53f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41b4288c03af394261541b9a8395e8f3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga41b4288c03af394261541b9a8395e8f3">CO_LSSmaster_switchStateSelect</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="unionCO__LSS__address__t.html">CO_LSS_address_t</a> *lssAddress)</td></tr>
<tr class="memdesc:ga41b4288c03af394261541b9a8395e8f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS switch state select.  <a href="group__CO__LSSmaster.html#ga41b4288c03af394261541b9a8395e8f3">More...</a><br /></td></tr>
<tr class="separator:ga41b4288c03af394261541b9a8395e8f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac0e13ec42e1fd85da5ddef6f654ef1a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gac0e13ec42e1fd85da5ddef6f654ef1a4">CO_LSSmaster_switchStateDeselect</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster)</td></tr>
<tr class="memdesc:gac0e13ec42e1fd85da5ddef6f654ef1a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS switch state deselect.  <a href="group__CO__LSSmaster.html#gac0e13ec42e1fd85da5ddef6f654ef1a4">More...</a><br /></td></tr>
<tr class="separator:gac0e13ec42e1fd85da5ddef6f654ef1a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga71a5d90e569ee7e88763a541c286e240"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga71a5d90e569ee7e88763a541c286e240">CO_LSSmaster_configureBitTiming</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> bit)</td></tr>
<tr class="memdesc:ga71a5d90e569ee7e88763a541c286e240"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS configure Bit Timing.  <a href="group__CO__LSSmaster.html#ga71a5d90e569ee7e88763a541c286e240">More...</a><br /></td></tr>
<tr class="separator:ga71a5d90e569ee7e88763a541c286e240"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2cdba08d9a564c4a61ebbcd0d10342fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga2cdba08d9a564c4a61ebbcd0d10342fd">CO_LSSmaster_configureNodeId</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="group__CO__dataTypes.html#gaba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> nodeId)</td></tr>
<tr class="memdesc:ga2cdba08d9a564c4a61ebbcd0d10342fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS configure node ID.  <a href="group__CO__LSSmaster.html#ga2cdba08d9a564c4a61ebbcd0d10342fd">More...</a><br /></td></tr>
<tr class="separator:ga2cdba08d9a564c4a61ebbcd0d10342fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacea091d379a5338f13963eb745b25b16"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gacea091d379a5338f13963eb745b25b16">CO_LSSmaster_configureStore</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us)</td></tr>
<tr class="memdesc:gacea091d379a5338f13963eb745b25b16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS store configuration.  <a href="group__CO__LSSmaster.html#gacea091d379a5338f13963eb745b25b16">More...</a><br /></td></tr>
<tr class="separator:gacea091d379a5338f13963eb745b25b16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa016c0f3dc4dd021801b6139765657ab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gaa016c0f3dc4dd021801b6139765657ab">CO_LSSmaster_ActivateBit</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a> switchDelay_ms)</td></tr>
<tr class="memdesc:gaa016c0f3dc4dd021801b6139765657ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS activate bit timing.  <a href="group__CO__LSSmaster.html#gaa016c0f3dc4dd021801b6139765657ab">More...</a><br /></td></tr>
<tr class="separator:gaa016c0f3dc4dd021801b6139765657ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1b0a5c9e27e046736c6ec55a0256ed77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga1b0a5c9e27e046736c6ec55a0256ed77">CO_LSSmaster_InquireLssAddress</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="unionCO__LSS__address__t.html">CO_LSS_address_t</a> *lssAddress)</td></tr>
<tr class="memdesc:ga1b0a5c9e27e046736c6ec55a0256ed77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS inquire LSS address.  <a href="group__CO__LSSmaster.html#ga1b0a5c9e27e046736c6ec55a0256ed77">More...</a><br /></td></tr>
<tr class="separator:ga1b0a5c9e27e046736c6ec55a0256ed77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga22414a7184ca0c9d371dd67e9990d820"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#ga22414a7184ca0c9d371dd67e9990d820">CO_LSSmaster_Inquire</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="group__CO__LSS.html#gacc7cba1fb1f1f595506751d6af385964">CO_LSS_cs_t</a> lssInquireCs, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> *value)</td></tr>
<tr class="memdesc:ga22414a7184ca0c9d371dd67e9990d820"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request LSS inquire node ID or part of LSS address.  <a href="group__CO__LSSmaster.html#ga22414a7184ca0c9d371dd67e9990d820">More...</a><br /></td></tr>
<tr class="separator:ga22414a7184ca0c9d371dd67e9990d820"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad01ce178ea43b1843f541d4dd488f90e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__CO__LSSmaster.html#gad01ce178ea43b1843f541d4dd488f90e">CO_LSSmaster_IdentifyFastscan</a> (<a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *LSSmaster, <a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> timeDifference_us, <a class="el" href="structCO__LSSmaster__fastscan__t.html">CO_LSSmaster_fastscan_t</a> *fastscan)</td></tr>
<tr class="memdesc:gad01ce178ea43b1843f541d4dd488f90e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select a node by LSS identify fastscan.  <a href="group__CO__LSSmaster.html#gad01ce178ea43b1843f541d4dd488f90e">More...</a><br /></td></tr>
<tr class="separator:gad01ce178ea43b1843f541d4dd488f90e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>CANopen Layer Setting Service - master protocol.</p>
<p>The client/master can use the following services</p><ul>
<li>node selection via LSS address</li>
<li>node selection via LSS fastscan</li>
<li>Inquire LSS address of currently selected node</li>
<li>Inquire node ID</li>
<li>Configure bit timing</li>
<li>Configure node ID</li>
<li>Activate bit timing parameters</li>
<li>Store configuration</li>
</ul>
<p>The LSS master is initalized during the CANopenNode initialization process. Except for enabling the LSS master in the configurator, no further run-time configuration is needed for basic operation. The LSS master does basic checking of commands and command sequence.</p>
<h3>Usage</h3>
<p>Usage of the CANopen LSS master is demonstrated in CANopenSocket application, see CO_LSS_master.c / CO_LSS_master.h files.</p>
<p>It essentially is always as following:</p><ul>
<li>select node(s)</li>
<li>call master command(s)</li>
<li>evaluate return value</li>
<li>deselect nodes</li>
</ul>
<p>All commands need to be run cyclically, e.g. like this </p><div class="fragment"><div class="line">interval = 0;</div>
<div class="line"><span class="keywordflow">do</span> {</div>
<div class="line">    ret = CO_LSSmaster_InquireNodeId(LSSmaster, interval, &amp;outval);</div>
<div class="line"> </div>
<div class="line">    interval = 1; ms</div>
<div class="line">    sleep(interval);</div>
<div class="line">} <span class="keywordflow">while</span> (ret == <a class="code" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34">CO_LSSmaster_WAIT_SLAVE</a>);</div>
</div><!-- fragment --><p>A more advanced implementation can make use of the callback function to shorten waiting times. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga76adbab914fff5b18982dad449e0a00a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga76adbab914fff5b18982dad449e0a00a">&#9670;&nbsp;</a></span>CO_LSSmaster_DEFAULT_TIMEOUT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CO_LSSmaster_DEFAULT_TIMEOUT&#160;&#160;&#160;1000U /* ms */</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Default timeout for LSS slave in ms. </p>
<p>This is the same as for SDO. For more info about LSS timeout see <a class="el" href="group__CO__LSSmaster.html#gae22758aff11b796cfaed979c5f2808c0" title="Change LSS master timeout.">CO_LSSmaster_changeTimeout()</a> </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gae848ff3ff649c8a23b96053efaea4985"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae848ff3ff649c8a23b96053efaea4985">&#9670;&nbsp;</a></span>CO_LSSmaster_return_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return values of LSS master functions. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a0f527d1ce01820fa184ccae2510505c7"></a>CO_LSSmaster_SCAN_FINISHED&#160;</td><td class="fielddoc"><p>Scanning finished successful. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34"></a>CO_LSSmaster_WAIT_SLAVE&#160;</td><td class="fielddoc"><p>No response arrived from slave yet. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099"></a>CO_LSSmaster_OK&#160;</td><td class="fielddoc"><p>Success, end of communication. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d"></a>CO_LSSmaster_TIMEOUT&#160;</td><td class="fielddoc"><p>No reply received. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9"></a>CO_LSSmaster_ILLEGAL_ARGUMENT&#160;</td><td class="fielddoc"><p>Invalid argument. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60"></a>CO_LSSmaster_INVALID_STATE&#160;</td><td class="fielddoc"><p>State machine not ready or already processing a request. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985ae9eb103f25dbe694143a64e7bb2c29d9"></a>CO_LSSmaster_SCAN_NOACK&#160;</td><td class="fielddoc"><p>No node found that matches scan request. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985af84e0db6bd9aeebffc4266618145a8ea"></a>CO_LSSmaster_SCAN_FAILED&#160;</td><td class="fielddoc"><p>An error occurred while scanning. </p>
<p>Try again </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985ab6985b2cbcb24653ec1f2ae46d3c09cd"></a>CO_LSSmaster_OK_ILLEGAL_ARGUMENT&#160;</td><td class="fielddoc"><p>LSS success, node rejected argument because of non-supported value. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggae848ff3ff649c8a23b96053efaea4985a51083a5cf04e03a2f623eddb1d7324c7"></a>CO_LSSmaster_OK_MANUFACTURER&#160;</td><td class="fielddoc"><p>LSS success, node rejected argument with manufacturer error code. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga6e3f0d07f0712c371fb81cbf4a3dbcb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6e3f0d07f0712c371fb81cbf4a3dbcb1">&#9670;&nbsp;</a></span>CO_LSSmaster_scantype_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__CO__LSSmaster.html#ga6e3f0d07f0712c371fb81cbf4a3dbcb1">CO_LSSmaster_scantype_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Scan type for <a class="el" href="structCO__LSSmaster__fastscan__t.html" title="Parameters for LSS fastscan CO_LSSmaster_IdentifyFastscan.">CO_LSSmaster_fastscan_t</a> scan. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga6e3f0d07f0712c371fb81cbf4a3dbcb1a5666c53e2fc02e214294bd3210146c90"></a>CO_LSSmaster_FS_SCAN&#160;</td><td class="fielddoc"><p>Do full 32 bit scan. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga6e3f0d07f0712c371fb81cbf4a3dbcb1ae0e6e92e760129fc173a0a4f19a0cf07"></a>CO_LSSmaster_FS_SKIP&#160;</td><td class="fielddoc"><p>Skip this value. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3"></a>CO_LSSmaster_FS_MATCH&#160;</td><td class="fielddoc"><p>Full 32 bit value is given as argument, just verify. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga0675297a7e7e1f472ad2e88d6b7408e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0675297a7e7e1f472ad2e88d6b7408e7">&#9670;&nbsp;</a></span>CO_LSSmaster_init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532">CO_ReturnError_t</a> CO_LSSmaster_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>timeout_ms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *&#160;</td>
          <td class="paramname"><em>CANdevRx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>CANdevRxIdx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>CANidLssSlave</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structCO__CANmodule__t.html">CO_CANmodule_t</a> *&#160;</td>
          <td class="paramname"><em>CANdevTx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>CANdevTxIdx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>CANidLssMaster</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize LSS object. </p>
<p>Function must be called in the communication reset section.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object will be initialized. </td></tr>
    <tr><td class="paramname">timeout_ms</td><td>slave response timeout in ms, for more detail see <a class="el" href="group__CO__LSSmaster.html#gae22758aff11b796cfaed979c5f2808c0" title="Change LSS master timeout.">CO_LSSmaster_changeTimeout()</a> </td></tr>
    <tr><td class="paramname">CANdevRx</td><td>CAN device for LSS master reception. </td></tr>
    <tr><td class="paramname">CANdevRxIdx</td><td>Index of receive buffer in the above CAN device. </td></tr>
    <tr><td class="paramname">CANidLssSlave</td><td>COB ID for reception. </td></tr>
    <tr><td class="paramname">CANdevTx</td><td>CAN device for LSS master transmission. </td></tr>
    <tr><td class="paramname">CANdevTxIdx</td><td>Index of transmit buffer in the above CAN device. </td></tr>
    <tr><td class="paramname">CANidLssMaster</td><td>COB ID for transmission. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__driver.html#ga1cb2d3466eb0c6d267f3b5ff1a0d9532" title="Return values of some CANopen functions.">CO_ReturnError_t</a>: CO_ERROR_NO or CO_ERROR_ILLEGAL_ARGUMENT. </dd></dl>

</div>
</div>
<a id="gae22758aff11b796cfaed979c5f2808c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae22758aff11b796cfaed979c5f2808c0">&#9670;&nbsp;</a></span>CO_LSSmaster_changeTimeout()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CO_LSSmaster_changeTimeout </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>timeout_ms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Change LSS master timeout. </p>
<p>On LSS, a "negative ack" is signaled by the slave not answering. Because of that, a low timeout value can significantly increase protocol speed in some cases (e.g. fastscan). However, as soon as there is activity on the bus, LSS messages can be delayed because of their low CAN network priority (see <a class="el" href="group__CO__driver.html#ga01dd35ae53fd2209ceccabdc8bf8dd06" title="Default CANopen identifiers.">CO_Default_CAN_ID_t</a>).</p>
<dl class="section remark"><dt>Remarks</dt><dd>Be aware that a "late response" will seriously mess up LSS, so this value must be selected "as high as necessary and as low as possible". CiA does neither specify nor recommend a value.</dd>
<dd>
This timeout is per-transfer. If a command internally needs multiple transfers to complete, this timeout is applied on each transfer.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeout_ms</td><td>timeout value in ms </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="gabfeb7e75d88b76bb00c1740381c7b53f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabfeb7e75d88b76bb00c1740381c7b53f">&#9670;&nbsp;</a></span>CO_LSSmaster_initCallbackPre()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CO_LSSmaster_initCallbackPre </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *object)&#160;</td>
          <td class="paramname"><em>pFunctSignal</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize LSSmasterRx callback function. </p>
<p>Function initializes optional callback function, which should immediately start further LSS processing. Callback is called after LSS message is received from the CAN bus. It should signal the RTOS to resume corresponding task.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">object</td><td>Pointer to object, which will be passed to pFunctSignal(). Can be NULL </td></tr>
    <tr><td class="paramname">pFunctSignal</td><td>Pointer to the callback function. Not called if NULL. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga41b4288c03af394261541b9a8395e8f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga41b4288c03af394261541b9a8395e8f3">&#9670;&nbsp;</a></span>CO_LSSmaster_switchStateSelect()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_switchStateSelect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="unionCO__LSS__address__t.html">CO_LSS_address_t</a> *&#160;</td>
          <td class="paramname"><em>lssAddress</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS switch state select. </p>
<p>This function can select one specific or all nodes.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a> Function is non-blocking.</p>
<dl class="section remark"><dt>Remarks</dt><dd>Only one selection can be active at any time.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramname">lssAddress</td><td>LSS target address. If NULL, all nodes are selected </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a> </dd></dl>

</div>
</div>
<a id="gac0e13ec42e1fd85da5ddef6f654ef1a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac0e13ec42e1fd85da5ddef6f654ef1a4">&#9670;&nbsp;</a></span>CO_LSSmaster_switchStateDeselect()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_switchStateDeselect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS switch state deselect. </p>
<p>This function deselects all nodes, so it doesn't matter if a specific node is selected.</p>
<p>This function also resets the LSS master state machine to a clean state</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a> </dd></dl>

</div>
</div>
<a id="ga71a5d90e569ee7e88763a541c286e240"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga71a5d90e569ee7e88763a541c286e240">&#9670;&nbsp;</a></span>CO_LSSmaster_configureBitTiming()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_configureBitTiming </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>bit</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS configure Bit Timing. </p>
<p>The new bit rate is set as new pending value.</p>
<p>This function needs one specific node to be selected.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramname">bit</td><td>new bit rate </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a51083a5cf04e03a2f623eddb1d7324c7" title="LSS success, node rejected argument with manufacturer error code.">CO_LSSmaster_OK_MANUFACTURER</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ab6985b2cbcb24653ec1f2ae46d3c09cd" title="LSS success, node rejected argument because of non-supported value.">CO_LSSmaster_OK_ILLEGAL_ARGUMENT</a> </dd></dl>

</div>
</div>
<a id="ga2cdba08d9a564c4a61ebbcd0d10342fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2cdba08d9a564c4a61ebbcd0d10342fd">&#9670;&nbsp;</a></span>CO_LSSmaster_configureNodeId()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_configureNodeId </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#gaba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>&#160;</td>
          <td class="paramname"><em>nodeId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS configure node ID. </p>
<p>The new node id is set as new pending node ID.</p>
<p>This function needs one specific node to be selected.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramname">nodeId</td><td>new node ID. Special value <a class="el" href="group__CO__LSS.html#ga02771497ab59dd86f2dbe59cd1fb04b1" title="Invalid node ID triggers node ID assignment.">CO_LSS_NODE_ID_ASSIGNMENT</a> can be used to invalidate node ID. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a51083a5cf04e03a2f623eddb1d7324c7" title="LSS success, node rejected argument with manufacturer error code.">CO_LSSmaster_OK_MANUFACTURER</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ab6985b2cbcb24653ec1f2ae46d3c09cd" title="LSS success, node rejected argument because of non-supported value.">CO_LSSmaster_OK_ILLEGAL_ARGUMENT</a> </dd></dl>

</div>
</div>
<a id="gacea091d379a5338f13963eb745b25b16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacea091d379a5338f13963eb745b25b16">&#9670;&nbsp;</a></span>CO_LSSmaster_configureStore()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_configureStore </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS store configuration. </p>
<p>The current "pending" values for bit rate and node ID in LSS slave are stored as "permanent" values.</p>
<p>This function needs one specific node to be selected.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a51083a5cf04e03a2f623eddb1d7324c7" title="LSS success, node rejected argument with manufacturer error code.">CO_LSSmaster_OK_MANUFACTURER</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ab6985b2cbcb24653ec1f2ae46d3c09cd" title="LSS success, node rejected argument because of non-supported value.">CO_LSSmaster_OK_ILLEGAL_ARGUMENT</a> </dd></dl>

</div>
</div>
<a id="gaa016c0f3dc4dd021801b6139765657ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa016c0f3dc4dd021801b6139765657ab">&#9670;&nbsp;</a></span>CO_LSSmaster_ActivateBit()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_ActivateBit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga1f1825b69244eb3ad2c7165ddc99c956">uint16_t</a>&#160;</td>
          <td class="paramname"><em>switchDelay_ms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS activate bit timing. </p>
<p>The current "pending" bit rate in LSS slave is applied.</p>
<p>Be aware that changing the bit rate is a critical step for the network. A failure will render the network unusable! Therefore, this function only should be called if the following conditions are met:</p><ul>
<li>all nodes support changing bit timing</li>
<li>new bit timing is successfully set as "pending" in all nodes</li>
<li>all nodes have to activate the new bit timing roughly at the same time. Therefore this function needs all nodes to be selected.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">switchDelay_ms</td><td>delay that is applied by the slave once before and once after switching in ms. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a> </dd></dl>

</div>
</div>
<a id="ga1b0a5c9e27e046736c6ec55a0256ed77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1b0a5c9e27e046736c6ec55a0256ed77">&#9670;&nbsp;</a></span>CO_LSSmaster_InquireLssAddress()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_InquireLssAddress </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="unionCO__LSS__address__t.html">CO_LSS_address_t</a> *&#160;</td>
          <td class="paramname"><em>lssAddress</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS inquire LSS address. </p>
<p>The LSS address value is read from the node. This is useful when the node was selected by fastscan.</p>
<p>This function needs one specific node to be selected.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">lssAddress</td><td>read result when function returns successfully </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a> </dd></dl>

</div>
</div>
<a id="ga22414a7184ca0c9d371dd67e9990d820"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga22414a7184ca0c9d371dd67e9990d820">&#9670;&nbsp;</a></span>CO_LSSmaster_Inquire()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_Inquire </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__LSS.html#gacc7cba1fb1f1f595506751d6af385964">CO_LSS_cs_t</a>&#160;</td>
          <td class="paramname"><em>lssInquireCs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a> *&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request LSS inquire node ID or part of LSS address. </p>
<p>The node-ID, identity vendor-ID, product-code, revision-number or serial-number value is read from the node.</p>
<p>This function needs one specific node to be selected.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">lssInquireCs</td><td>One of CO_LSS_INQUIRE_xx commands from <a class="el" href="group__CO__LSS.html#gacc7cba1fb1f1f595506751d6af385964" title="LSS protocol command specifiers.">CO_LSS_cs_t</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>read result when function returns successfully </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1be85610f29d8e6cecebac9db2da3099" title="Success, end of communication.">CO_LSSmaster_OK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a3a61073ef2c8ef7c5be946618b95d42d" title="No reply received.">CO_LSSmaster_TIMEOUT</a> </dd></dl>

</div>
</div>
<a id="gad01ce178ea43b1843f541d4dd488f90e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad01ce178ea43b1843f541d4dd488f90e">&#9670;&nbsp;</a></span>CO_LSSmaster_IdentifyFastscan()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__CO__LSSmaster.html#gae848ff3ff649c8a23b96053efaea4985">CO_LSSmaster_return_t</a> CO_LSSmaster_IdentifyFastscan </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__t.html">CO_LSSmaster_t</a> *&#160;</td>
          <td class="paramname"><em>LSSmaster</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__CO__dataTypes.html#ga33594304e786b158f3fb30289278f5af">uint32_t</a>&#160;</td>
          <td class="paramname"><em>timeDifference_us</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structCO__LSSmaster__fastscan__t.html">CO_LSSmaster_fastscan_t</a> *&#160;</td>
          <td class="paramname"><em>fastscan</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Select a node by LSS identify fastscan. </p>
<p>This initiates searching for a unconfigured node by the means of LSS fastscan mechanism. When this function is finished</p><ul>
<li>a (more or less) arbitrary node is selected and ready for node ID assingment</li>
<li>no node is selected because the given criteria do not match a node</li>
<li>no node is selected because all nodes are already configured</li>
</ul>
<p>There are multiple ways to scan for a node. Depending on those, the scan will take different amounts of time:</p><ul>
<li>full scan</li>
<li>partial scan</li>
<li>verification</li>
</ul>
<p>Most of the time, those are used in combination. Consider the following example:</p><ul>
<li>Vendor ID and product code are known</li>
<li>Software version doesn't matter</li>
<li>Serial number is unknown</li>
</ul>
<p>In this case, the fastscan structure should be set up as following: </p><div class="fragment"><div class="line"><a class="code" href="structCO__LSSmaster__fastscan__t.html">CO_LSSmaster_fastscan_t</a> fastscan;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a42853c0091c96d7fc7e763c2be3b6e8a">scan</a>[<a class="code" href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa4eb5786c488953cdb2d5ffbb25c15298">CO_LSS_FASTSCAN_VENDOR_ID</a>] = <a class="code" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3">CO_LSSmaster_FS_MATCH</a>;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a69540f77885162e936803a9526d3c342">match</a>.vendorID = YOUR_VENDOR_ID;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a42853c0091c96d7fc7e763c2be3b6e8a">scan</a>[<a class="code" href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa6514ca82752d5496904388a0589da209">CO_LSS_FASTSCAN_PRODUCT</a>] = <a class="code" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3">CO_LSSmaster_FS_MATCH</a>;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a69540f77885162e936803a9526d3c342">match</a>.productCode = YOUR_PRODUCT_CODE;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a42853c0091c96d7fc7e763c2be3b6e8a">scan</a>[<a class="code" href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa0e153eebb470156f5d0a27caac2bc71f">CO_LSS_FASTSCAN_REV</a>] = <a class="code" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ae0e6e92e760129fc173a0a4f19a0cf07">CO_LSSmaster_FS_SKIP</a>;</div>
<div class="line">fastscan.<a class="code" href="structCO__LSSmaster__fastscan__t.html#a42853c0091c96d7fc7e763c2be3b6e8a">scan</a>[<a class="code" href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aabe98c25d444fa5971bc81f775cd6bb35">CO_LSS_FASTSCAN_SERIAL</a>] = <a class="code" href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1a5666c53e2fc02e214294bd3210146c90">CO_LSSmaster_FS_SCAN</a>;</div>
</div><!-- fragment --><p>This example will take 2 scan cyles for verifying vendor ID and product code and 33 scan cycles to find the serial number.</p>
<p>For scanning, the following limitations apply:</p><ul>
<li>No more than two values can be skipped</li>
<li>Vendor ID cannot be skipped</li>
</ul>
<dl class="section remark"><dt>Remarks</dt><dd>When doing partial scans, it is in the responsibility of the user that the LSS address is unique.</dd></dl>
<p>This function needs that no node is selected when starting the scan process.</p>
<p>Function must be called cyclically until it returns != <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>. Function is non-blocking.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">LSSmaster</td><td>This object. </td></tr>
    <tr><td class="paramname">timeDifference_us</td><td>Time difference from previous function call in [microseconds]. Zero when request is started. </td></tr>
    <tr><td class="paramname">fastscan</td><td>struct according to <a class="el" href="structCO__LSSmaster__fastscan__t.html" title="Parameters for LSS fastscan CO_LSSmaster_IdentifyFastscan.">CO_LSSmaster_fastscan_t</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a9bd04e1c9923416d1d1ecb1ded6bc7b9" title="Invalid argument.">CO_LSSmaster_ILLEGAL_ARGUMENT</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a1e99145e94c3a6fb8cc7c48150ed5b60" title="State machine not ready or already processing a request.">CO_LSSmaster_INVALID_STATE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34" title="No response arrived from slave yet.">CO_LSSmaster_WAIT_SLAVE</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a0f527d1ce01820fa184ccae2510505c7" title="Scanning finished successful.">CO_LSSmaster_SCAN_FINISHED</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985ae9eb103f25dbe694143a64e7bb2c29d9" title="No node found that matches scan request.">CO_LSSmaster_SCAN_NOACK</a>, <a class="el" href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985af84e0db6bd9aeebffc4266618145a8ea" title="An error occurred while scanning.">CO_LSSmaster_SCAN_FAILED</a> </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="astructCO__LSSmaster__fastscan__t_html_a42853c0091c96d7fc7e763c2be3b6e8a"><div class="ttname"><a href="structCO__LSSmaster__fastscan__t.html#a42853c0091c96d7fc7e763c2be3b6e8a">CO_LSSmaster_fastscan_t::scan</a></div><div class="ttdeci">CO_LSSmaster_scantype_t scan[4]</div><div class="ttdoc">Scan type for each part of the LSS address.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:408</div></div>
<div class="ttc" id="agroup__CO__LSSmaster_html_ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34"><div class="ttname"><a href="group__CO__LSSmaster.html#ggae848ff3ff649c8a23b96053efaea4985a20fbe514e36bd92534141bb75e68eb34">CO_LSSmaster_WAIT_SLAVE</a></div><div class="ttdeci">@ CO_LSSmaster_WAIT_SLAVE</div><div class="ttdoc">No response arrived from slave yet.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:93</div></div>
<div class="ttc" id="astructCO__LSSmaster__fastscan__t_html"><div class="ttname"><a href="structCO__LSSmaster__fastscan__t.html">CO_LSSmaster_fastscan_t</a></div><div class="ttdoc">Parameters for LSS fastscan CO_LSSmaster_IdentifyFastscan.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:407</div></div>
<div class="ttc" id="agroup__CO__LSS_html_gga1ce707d287b285e7d148f37f93e0f02aabe98c25d444fa5971bc81f775cd6bb35"><div class="ttname"><a href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aabe98c25d444fa5971bc81f775cd6bb35">CO_LSS_FASTSCAN_SERIAL</a></div><div class="ttdeci">@ CO_LSS_FASTSCAN_SERIAL</div><div class="ttdoc">Serial number.</div><div class="ttdef"><b>Definition:</b> CO_LSS.h:153</div></div>
<div class="ttc" id="agroup__CO__LSSmaster_html_gga6e3f0d07f0712c371fb81cbf4a3dbcb1ae0e6e92e760129fc173a0a4f19a0cf07"><div class="ttname"><a href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ae0e6e92e760129fc173a0a4f19a0cf07">CO_LSSmaster_FS_SKIP</a></div><div class="ttdeci">@ CO_LSSmaster_FS_SKIP</div><div class="ttdoc">Skip this value.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:400</div></div>
<div class="ttc" id="agroup__CO__LSS_html_gga1ce707d287b285e7d148f37f93e0f02aa0e153eebb470156f5d0a27caac2bc71f"><div class="ttname"><a href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa0e153eebb470156f5d0a27caac2bc71f">CO_LSS_FASTSCAN_REV</a></div><div class="ttdeci">@ CO_LSS_FASTSCAN_REV</div><div class="ttdoc">Revision number.</div><div class="ttdef"><b>Definition:</b> CO_LSS.h:152</div></div>
<div class="ttc" id="agroup__CO__LSSmaster_html_gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3"><div class="ttname"><a href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1ad5a936fd00345aea75e8917f99df4ab3">CO_LSSmaster_FS_MATCH</a></div><div class="ttdeci">@ CO_LSSmaster_FS_MATCH</div><div class="ttdoc">Full 32 bit value is given as argument, just verify.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:401</div></div>
<div class="ttc" id="agroup__CO__LSSmaster_html_gga6e3f0d07f0712c371fb81cbf4a3dbcb1a5666c53e2fc02e214294bd3210146c90"><div class="ttname"><a href="group__CO__LSSmaster.html#gga6e3f0d07f0712c371fb81cbf4a3dbcb1a5666c53e2fc02e214294bd3210146c90">CO_LSSmaster_FS_SCAN</a></div><div class="ttdeci">@ CO_LSSmaster_FS_SCAN</div><div class="ttdoc">Do full 32 bit scan.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:399</div></div>
<div class="ttc" id="agroup__CO__LSS_html_gga1ce707d287b285e7d148f37f93e0f02aa6514ca82752d5496904388a0589da209"><div class="ttname"><a href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa6514ca82752d5496904388a0589da209">CO_LSS_FASTSCAN_PRODUCT</a></div><div class="ttdeci">@ CO_LSS_FASTSCAN_PRODUCT</div><div class="ttdoc">Product code.</div><div class="ttdef"><b>Definition:</b> CO_LSS.h:151</div></div>
<div class="ttc" id="astructCO__LSSmaster__fastscan__t_html_a69540f77885162e936803a9526d3c342"><div class="ttname"><a href="structCO__LSSmaster__fastscan__t.html#a69540f77885162e936803a9526d3c342">CO_LSSmaster_fastscan_t::match</a></div><div class="ttdeci">CO_LSS_address_t match</div><div class="ttdoc">Value to match in case of CO_LSSmaster_FS_MATCH.</div><div class="ttdef"><b>Definition:</b> CO_LSSmaster.h:409</div></div>
<div class="ttc" id="agroup__CO__LSS_html_gga1ce707d287b285e7d148f37f93e0f02aa4eb5786c488953cdb2d5ffbb25c15298"><div class="ttname"><a href="group__CO__LSS.html#gga1ce707d287b285e7d148f37f93e0f02aa4eb5786c488953cdb2d5ffbb25c15298">CO_LSS_FASTSCAN_VENDOR_ID</a></div><div class="ttdeci">@ CO_LSS_FASTSCAN_VENDOR_ID</div><div class="ttdoc">Vendor ID.</div><div class="ttdef"><b>Definition:</b> CO_LSS.h:150</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Sat Sep 19 2020 10:03:21 for CANopenNode by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
